InvertPermutation ================= 计算输入排列的逆排列。对于输入数组 ``input``,输出数组 ``output`` 满足: .. math:: output[input_i] = i \quad \text{for } i = 0, 1, \dots, num-1 输入: - **input** - 输入排列数组地址。 - **num** - 数组长度。 - **core_mask** - 核掩码(仅适用于共享存储版本)。 输出: - **output** - 逆排列数组地址,长度同输入。 支持平台: ``FT78NE`` ``MT7004`` .. note:: - FT78NE 支持int8, int16, int32 - MT7004 支持int16, int32 **共享存储版本:** .. c:function:: void i8_invertpermutation_s(int8_t* input, int8_t* output, int num, int core_mask) .. c:function:: void i16_invertpermutation_s(int16_t* input, int16_t* output, int num, int core_mask) .. c:function:: void i32_invertpermutation_s(int32_t* input, int32_t* output, int num, int core_mask) **C调用示例:** .. code-block:: c :linenos: :emphasize-lines: 11 //FT78NE示例 #include #include int main() { int32_t *input = (int32_t *)0xA0000000; // input在DDR空间 int32_t *output = (int32_t *)0xC0000000; int num = 100; int core_mask = 0xff; i32_invertpermutation_s(input, output, num, core_mask); return 0; } **私有存储版本:** .. c:function:: void i8_invertpermutation_p(int8_t* input, int8_t* output, int num) .. c:function:: void i16_invertpermutation_p(int16_t* input, int16_t* output, int num) .. c:function:: void i32_invertpermutation_p(int32_t* input, int32_t* output, int num) **C调用示例:** .. code-block:: c :linenos: :emphasize-lines: 10 //FT78NE示例 #include #include int main() { int32_t *input = (int32_t *)0x10810000; // input在L2空间 int32_t *output = (int32_t *)0x10820000; int num = 100; i32_invertpermutation_p(input, output, num); return 0; }